package com.jf.cloud.order.mapper;

import com.jf.cloud.common.order.vo.OrderVirtualInfoVO;
import com.jf.cloud.order.model.OrderVirtualInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface  OrderVirtualInfoMapper {
    /**
     * 获取订单虚拟商品信息列表
     * @return 订单虚拟商品信息列表
     */
    List<OrderVirtualInfo> list();

    /**
     * 根据订单虚拟商品信息id获取订单虚拟商品信息
     *
     * @param id 订单虚拟商品信息id
     * @return 订单虚拟商品信息
     */
    OrderVirtualInfo getById(@Param("id") Long id);

    /**
     * 保存订单虚拟商品信息
     * @param orderVirtualInfo 订单虚拟商品信息
     */
    void save(@Param("orderVirtualInfo") OrderVirtualInfo orderVirtualInfo);

    /**
     * 更新订单虚拟商品信息
     * @param orderVirtualInfo 订单虚拟商品信息
     */
    void update(@Param("orderVirtualInfo") OrderVirtualInfoVO orderVirtualInfo);

    /**
     * 根据订单虚拟商品信息id删除订单虚拟商品信息
     * @param id
     */
    void deleteById(@Param("id") Long id);

    /**
     * 批量保存虚拟订单信息
     * @param orderVirtualInfoList
     */
    void saveBatch(@Param("orderVirtualInfoList") List<OrderVirtualInfo> orderVirtualInfoList);

    /**
     * 根据订单id和自提点id获取虚拟订单
     * @param orderId
     * @param stationId
     * @return
     */
    List<OrderVirtualInfoVO> getByOrderIdAndStationId(@Param("orderId")Long orderId, @Param("stationId")Long stationId);

    /**
     * 根据订单id和店铺id获取虚拟订单
     * @param orderId
     * @param shopId
     * @param isWriteOff 1.已核销 0.未核销
     */
    List<OrderVirtualInfoVO> getByOrderIdAndShopId(@Param("orderId")Long orderId, @Param("shopId")Long shopId, @Param("isWriteOff")Integer isWriteOff);

    /**
     * 根据订单id和核销码获取虚拟订单
     * @param orderId
     * @param code
     * @return
     */
    List<OrderVirtualInfoVO> getByOrderIdAndCode(@Param("orderId")Long orderId, @Param("code")String code);

}
